package co.uniquindio.software.medisys.gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;

import javax.swing.JButton;
import javax.swing.JComboBox;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import co.uniquindio.software.medisys.entidades.Eps;
import co.uniquindio.software.medisys.entidades.Paciente;
import co.uniquindio.software.medisys.logica.GestorEPS;
import co.uniquindio.software.medisys.logica.GestorPaciente;
import co.uniquindio.software.medisys.logica.GestorUsuario;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class GUI_Paciente extends JFrame implements ActionListener
{
	
	InterfazPrincipal miIP;
	private JLabel direccionLabel;
	private JLabel fechadeNacimientoLabel;
	private JTextField nombreField;
	private JTextField telefonoField;
	private JComboBox comboEps;
	private JTextField fechNaciField;
	private JTextField telFamField;
	private JTextField direccionField;
	private JTextField cedulaField;
	private JLabel TelPerCercana;
	private JLabel epsLabel;
	private JLabel telefonoLabel;
	private JLabel cedulaLabel;
	private JLabel nombreLabel;
	private JButton botCrear;
	private HashMap<String,Eps> epsMap = new HashMap<String,Eps>();

	public GUI_Paciente(InterfazPrincipal iP)
	{
		miIP = iP;
    	setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
		getContentPane().setLayout(null);
		setTitle("Crear Paciente");
		{
			botCrear = new JButton();
			getContentPane().add(botCrear);
			botCrear.setText("Crear");
			botCrear.setBounds(185, 284, 79, 23);
			botCrear.addActionListener(this);
		}
		{
			nombreLabel = new JLabel();
			getContentPane().add(nombreLabel);
			nombreLabel.setText("Nombre");
			nombreLabel.setBounds(42, 27, 54, 18);
		}
		{
			cedulaLabel = new JLabel();
			getContentPane().add(cedulaLabel);
			cedulaLabel.setText("Cedula");
			cedulaLabel.setBounds(42, 63, 45, 16);
		}
		{
			direccionLabel = new JLabel();
			getContentPane().add(direccionLabel);
			direccionLabel.setText("Direccion");
			direccionLabel.setBounds(42, 100, 54, 16);
		}
		{
			telefonoLabel = new JLabel();
			getContentPane().add(telefonoLabel);
			telefonoLabel.setText("Telefono");
			telefonoLabel.setBounds(42, 140, 54, 16);
		}
		{
			epsLabel = new JLabel();
			getContentPane().add(epsLabel);
			epsLabel.setText("EPS");
			epsLabel.setBounds(42, 242, 45, 16);
		}
		{
			fechadeNacimientoLabel = new JLabel();
			getContentPane().add(fechadeNacimientoLabel);
			fechadeNacimientoLabel.setText("Fecha Nacimiento");
			fechadeNacimientoLabel.setBounds(42, 209, 113, 16);
		}
		{
			TelPerCercana = new JLabel();
			getContentPane().add(TelPerCercana);
			TelPerCercana.setText("Telefono Familiar");
			TelPerCercana.setBounds(42, 175, 92, 16);
		}
		{
			nombreField = new JTextField();
			getContentPane().add(nombreField);
			nombreField.setBounds(155, 25, 142, 23);
		}
		{
			cedulaField = new JTextField();
			getContentPane().add(cedulaField);
			cedulaField.setBounds(155, 60, 142, 23);
		}
		{
			direccionField = new JTextField();
			getContentPane().add(direccionField);
			direccionField.setBounds(155, 97, 142, 23);
		}
		{
			telefonoField = new JTextField();
			getContentPane().add(telefonoField);
			telefonoField.setBounds(155, 137, 142, 23);
		}
		{
			telFamField = new JTextField();
			getContentPane().add(telFamField);
			telFamField.setBounds(155, 172, 142, 23);
		}
		{
			fechNaciField = new JTextField();
			getContentPane().add(fechNaciField);
			fechNaciField.setBounds(155, 206, 142, 23);
		}
		
		GestorEPS geps = new GestorEPS();
		Vector<Eps> eps = geps.obtenerEps();
		for(Eps e: eps){
			epsMap.put(e.getDescripcion(), e);
		}
		
		{
			ComboBoxModel comboEpsModel = 
					new DefaultComboBoxModel(
							epsMap.keySet().toArray());
			comboEps = new JComboBox();
			getContentPane().add(comboEps);
			comboEps.setModel(comboEpsModel);
			comboEps.setBounds(155, 239, 142, 23);
		}
		setSize(350,370);
		
		
		
		
	}

	/**
	 * este es el metodo action perormed q nos permite capturar los eventos que arroja 
	 * los botones de la interfaz paciente.
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == botCrear)
		{
			//Se capturan los datos en pantalla y se crea un objeto paciente 
			//Con estos datos capturados
			//se valida que hayan ingresado los datos
			if(telefonoField.getText().equals("") || cedulaField.getText().equals("") || telFamField.getText().equals("") 
				|| nombreField.getText().equals("") || direccionField.getText().equals(fechNaciField.getText().equals(""))  	)
			{
				JOptionPane.showMessageDialog(this, "Debe llenar todos los campos");
			}else
			{
				Paciente p= new Paciente();
				String nombre = nombreField.getText();
				String direccion = direccionField.getText();
				String fechaNac = fechNaciField.getText();
				int telefono;
				int cedula ;
				int telPerCer;
				
				//se valida que  los datos numericos sean numeros
				try
				{
					 telefono = Integer.parseInt(telefonoField.getText());
			
					 cedula = Integer.parseInt(cedulaField.getText()); 
			
					 telPerCer = Integer.parseInt(telFamField.getText());
					 
					 	p.setNombre(nombre);
						p.setIdPaciente(cedula);
						p.setDireccion(direccion); 
						p.setTelefono(telefono);
						p.setTelefonoPerCercana(telPerCer);
						p.setFechaDNacimiento(fechaNac);
						p.setEdad(1);
						
						Eps eps = epsMap.get(comboEps.getSelectedItem().toString());
						
						if(eps == null)
						{
							JOptionPane.showMessageDialog(this, "Debe ingresar una EPS existente");
						}else
						{
							p.setEp(eps);

							GestorPaciente gP = new GestorPaciente();
							gP.guardarPaciente(p);
							JOptionPane.showMessageDialog(this,"Paciente creado sastifactoriamente");
							nombreField.setText("");
							cedulaField.setText("");
							telefonoField.setText("");
							telFamField.setText("");
							direccionField.setText("");
							fechNaciField.setText("");
						}
						
				}catch (Exception e1) {
					JOptionPane.showMessageDialog(this, "los campos telefono, cedula, telefono de familiar \n deben ser numericos  ");
				}	
			}
		}
	}
}

	